<?php

namespace Shared\Doctrine\Mysql\StringFunction;

use Doctrine\ORM\Query\AST\Functions\FunctionNode,
	Doctrine\ORM\Query\Lexer;

class GroupConcat extends FunctionNode {

	private $expr1;
	private $expr2;

	public function parse(\Doctrine\ORM\Query\Parser $parser) {
		$parser->match(Lexer::T_IDENTIFIER);
		$parser->match(Lexer::T_OPEN_PARENTHESIS);
		$this->expr1 = $parser->ArithmeticExpression();
		$parser->match(Lexer::T_COMMA);
		$this->expr2 = $parser->ArithmeticExpression();
		$parser->match(Lexer::T_CLOSE_PARENTHESIS);
	}

	public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) {
		return 'GROUP_CONCAT('
			. $sqlWalker->walkArithmeticPrimary($this->expr1) . ' SEPARATOR '
			. $sqlWalker->walkArithmeticPrimary($this->expr2) . ')';
	}

}
